// 目标: 创建store仓库对象
// 1. 下载vuex: 终端命令(yarn add vuex)
// 2. 引入vuex
import Vue from 'vue'
import Vuex from 'vuex'
// 3. 注册
Vue.use(Vuex)
// 4. 实例化store对象，定义规则
// 定义创建全局转态变量
// const store=new Vuex.Store({state:{变量名：初始值}})
const store = new Vuex.Store({
  state: {
    count: 100
  },
  mutations: {//修改变量的值（唯一能修改state的地方，原因:devtool工具查看变化过程）
    // state拿到就是上面的state对象
    // value是一会逻辑页面调用mutations方法传递过来的值
    addCount (state, value) {
      state.count += value
    },//添加
    subCount (state, value) { // 负责减少库存的管家
      state.count -= value
    },
    setCount (state, value) { // 负责直接修改库存的管家
      state.count = value
    }
  },
  actions: {
    //修改变量值，一般用于异步请求
    asyncAddCount (store, num) {
      setTimeout(() => { // 1秒后, 异步提交给add的mutations
        store.commit('addCount', num)
      }, 1000)
    },
    asyncSubCount (store, num) {
      setTimeout(() => { // 1秒后, 异步提交给sub的mutations
        store.commit('subCount', num)
      }, 1000)
    }
  }
}

)
// mutatios和actions只能接受一个参数值（如果传递多个，请传递一个完整的对象）

// 5. 导出store对象在main.js注册
export default store